package newsSystem.user;

import newsSystem.dao.NewsInfoJDBC;
import newsSystem.news.NewsInfo;
import newsSystem.news.NewsManager;

import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;

public class UserPageOneJPane {
    private static JTable table1;//报刊信息面板
    static List<NewsInfo> newsList;
    static DefaultTableModel tableModel = new DefaultTableModel() {
        @Override
        public boolean isCellEditable(int row, int column) {
            // 设置所有单元格不可编辑
            return false;
        }
    };
    // 添加一个方法用于清空表格内容
    public static void clearTable() {
        System.out.println("清空列表数据");
        newsList.clear();
        tableModel.setRowCount(0); // 清空表格内容
    }
    public static  JScrollPane createPage(String userId){
        System.out.println("这是id"+userId);
// 调用NewsJDBC方法
        NewsInfoJDBC.newsJDBC();
//        报刊列表
        newsList= NewsManager.getNewsList();
        // 添加表头
        String[] columnNames = {"报刊编号", "报刊名", "出版社", "每月报价", "报刊摘要", "报刊出版日期","报刊分类编号"};
        tableModel.setColumnIdentifiers(columnNames);

        // 创建表格
        table1 = new JTable(tableModel);
        // 设置表头的字体大小
        JTableHeader header = table1.getTableHeader();
        Font headerFont = new Font("幼圆", Font.BOLD, 18); // 设置表头字体
        header.setFont(headerFont);
// 设置表格的字体
        Font tableFont = new Font("黑体", Font.PLAIN, 16); // 定义表格字体样式
        table1.setFont(tableFont);

// 设置表格的行高
        table1.setRowHeight(30); // 设置每行的高度为30像素
        // 将报刊列表数据添加到表格中
        for (NewsInfo news : newsList) {
            Object[] rowData = {news.getNewsID(), news.getNewsName(), news.getNewsPublish(),news.getMPrice(),news.getNewsContent(),news.getNewsData(),news.getNewsCNo()};
            tableModel.addRow(rowData);
        }
// 添加鼠标点击事件监听器
        table1.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // 获取被选中的行索引
                int rowIndex = table1.getSelectedRow();
                System.out.println("Selected Row Index: " + rowIndex);

                // 获取选定行的数据
                if (rowIndex >= 0) {
                    Object[] rowData = new Object[tableModel.getColumnCount()];
                    for (int i = 0; i < tableModel.getColumnCount(); i++) {
                        rowData[i] = tableModel.getValueAt(rowIndex, i);
                    }

                    // 创建一个确认对话框
                    int option = JOptionPane.showConfirmDialog(null, "是否订阅当前报刊?", "订阅确认", JOptionPane.YES_NO_OPTION);

                    // 处理用户的选择
                    if (option == JOptionPane.YES_OPTION) {
                        // 用户选择了订阅
                        System.out.println("用户选择了订阅");
                        System.out.println(userId);
                        // 将选定行的数据传递给 UserSubJPane
                        new UserSubJPane(rowData,userId);
                        // 在这里添加订阅的逻辑
                    } else if (option == JOptionPane.NO_OPTION) {
                        // 用户选择了取消订阅
                        System.out.println("用户选择了取消订阅");
                        // 在这里添加取消订阅的逻辑
                    } else {
                        // 用户关闭了对话框或者按下了"取消"按钮
                        System.out.println("用户关闭了对话框");
                    }
                }
                }
            });

        // 创建一个 JScrollPane 来容纳 JTable
        JScrollPane page1 = new JScrollPane(table1);
        // 设置 JScrollPane 的边框为黄色
        // 禁用布局管理器
//        page1.setBorder(new LineBorder(Color.YELLOW));
        page1.setBounds(0,0,900,400);
        return page1;
    }
}
